# @Filename:    property
# @Author:      王佳伟
# @Time:        2025-03-28 14:30
# @Describe:    Numpy的多种数组属性
import numpy as np

# ndarray.shape 这一数组属性返回一个包含数组维度的元组，它也可以用于调整数组大小。
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a.shape)

print('--------------------------------')

# 这会调整数组大小
a = np.array([[1, 2, 3], [4, 5, 6]])
a.shape = (3, 2)
print(a)

print('--------------------------------')

# NumPy 也提供了reshape函数来调整数组大小。
a = np.array([[1, 2, 3], [4, 5, 6]])
b = a.reshape(3, 2)
print(b)

print('================================')

# 等间隔数字的数组
a = np.arange(24)
print(a)

print('--------------------------------')

# ndarray.ndim 这一数组属性返回数组的维数
a = np.arange(24)
print(a.ndim)
# 调整其大小
b = a.reshape(2, 4, 3)
print(b)
print(b.ndim) # b现在拥有三个维度

print('================================')

# numpy.itemsize 这一数组属性返回数组中每个元素的字节单位长度
x = np.array([1, 2, 3, 4, 5], dtype=np.int8)
print(x.itemsize)

print('--------------------------------')

# 数组的dtype 现在是float32（四个字节）
x = np.array([1, 2, 3, 4, 5], dtype=np.float32)
print(x.itemsize)

print('================================')

# numpy.flags 展示当前的标志
# ndarray对象拥有以下属性。这个函数返回了它们的当前值。
'''
1.	C_CONTIGUOUS (C) 数组位于单一的、C 风格的连续区段内
2.	F_CONTIGUOUS (F) 数组位于单一的、Fortran 风格的连续区段内
3.	OWNDATA (O) 数组的内存从其它对象处借用
4.	WRITEABLE (W) 数据区域可写入。 将它设置为flase会锁定数据，使其只读
5.	ALIGNED (A) 数据和任何元素会为硬件适当对齐
6.	UPDATEIFCOPY (U) 这个数组是另一数组的副本。当这个数组释放时，源数组会由这个数组中的元素更新
'''
x = np.array([1, 2, 3, 4, 5])
print(x.flags)


